package cn.limbo.myandserver.utils;

import cn.limbo.myandserver.model.ReturnData;
import com.alibaba.fastjson.JSON;

import java.lang.reflect.Type;

/**
 * JSON格式的工具类
 */
public class JsonUtils {
    /**
     * 定义的JSON格式
     * @param code 状态码
     * @param msg 状态消息
     * @return JSON格式的字符串
     */
    public static String getJson(int code, String msg) {
        ReturnData returnData = new ReturnData();
        returnData.setSuccess(false);
        returnData.setErrorCode(code);
        returnData.setErrorMsg(msg);
        return JSON.toJSONString(returnData);
    }

    /**
     * 成功状态的JSON格式
     * @param data 状态信息
     * @return JSON格式的字符串
     */
    public static String successJson(Object data) {
        ReturnData returnData = new ReturnData();
        returnData.setSuccess(true);
        returnData.setErrorCode(200);
        returnData.setData(data);
        return JSON.toJSONString(returnData);
    }

    /**
     * 将JSON信息转成字符串形式
     * @param output JSON对象
     * @return 转换后的字符串
     */
    public static String toJSONString(Object output) {
        return JSON.toJSONString(output);
    }

    /**
     * 将字符串按照类型解析成JSON格式的消息
     * @param json 字符串
     * @param type 类型
     * @param <T> JSON消息类型
     * @return JSON消息
     */
    public static <T> T parseJson(String json, Type type) {
        return JSON.parseObject(json, type);
    }
}
